import { fromJS } from "immutable";

// 默认数据源【转化成immutable对象】
const defaultState = fromJS({
  isAdmin: null,
  userInfo: {
    username: ""
  }
})

// reducer 必须是一个纯函数
const admin = (state = defaultState, action) => {
  if (action.type === "set") {
    // update(name,callback)：修改immutable对象中的数据（浅层数据）【原型上的方法】
    // updateIn([name1,name2...],callback)：修改immutable对象中的数据（深层数据）【原型上的方法】
    // 浅数据修改
    // return state.update("isAdmin", () => action.payload.isAdmin).update("userInfo",  () => action.payload.userInfo)
    // 深数据修改
    return state.update("isAdmin", () => action.payload.isAdmin).updateIn(["userInfo", "username"], () => action.payload.userInfo.username)
  }

  // 只修改isAdmin
  if (action.type === "setIsAdmin") {
    return state.update("isAdmin", () => action.payload.isAdmin)
  }

  // 只修改userInfo
  if (action.type === "setUserInfo") {
    return state.updateIn(["userInfo", "username"], () => action.payload.userInfo.username)
  }

  // 返回state
  return state
}

// 导出reducer
export default admin
